<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        let arr1 = [10, 1, 8, 100, 9, 2, 12, 15];
        // 1. 用reduce找出数组arr1中的最大值
        const max = arr1.reduce((prev, item) => {
            if (item > prev) {
                return item;
            }
            return prev;
        }, arr1[0]);
        // console.log(max);

        // 2. 用reduce求出arr1中所有奇数和跟偶数和。结果以数组的形式输出。例如：[25, 32]
        const sum = arr1.reduce((prev, item) => {
            if (item % 2 == 0) {
                prev[1] += item;
            } else {
                prev[0] += item;
            }
            return prev;
        }, [0, 0]);
        // console.log(sum);



        // 3. 统计数组中每个字符出现的次数
        // 例如有如下数组，得到最终结果：[["a", 3], ["b", 2], ["c", 1], ["d", 1]]
        let arr2 = ["a", "a", "b", "c", "a", "b", "d"];
        let result = [];
        arr2.forEach((item) => {
            // 判断result数组中，是否包含一个小数组的下标0等于 item

            const resultItem = result.find((arrItem) => {
                return arrItem[0] == item;
            })
            if (resultItem) {
                resultItem[1]++;
            } else {
                result.push([item, 1])
            }


            // const isItem = result.some((arrItem) => {
            //     return arrItem[0] == item;
            // });

            // if (isItem) {
            //     for (let value of result) {
            //         if (value[0] === item) {
            //             value[1]++;
            //         }
            //     }
            // } else {
            //     result.push([item, 1])
            // }
        })
        console.log(result);




        // let count = {};
        // for (let value of arr2) {
        //     if (!count[value]) {
        //         count[value] = 1;
        //     } else {
        //         count[value]++;
        //     }
        // }

        // console.log(count);



        // 4. 用reduce实现数组的去重。
        let arr3 = [1, 1, 1, 2, 5, 7, 7, 7, 7, 1, 3];
        const newArr = arr3.reduce((prev, item) => {
            if (!prev.includes(item)) {
                prev.push(item);
            }
            return prev;
        }, [])
        console.log(newArr);


        // 5. 找出数组中，所有数据值和下标相同的数
        let arr4 = [0, 2, 2, 3, 4, 10];
        arr4.forEach((item, index) => {
            if (item == index) {
                console.log(item);
            }
        })

        // 6. 找出数组中和为10的两个数（找出任意一组即可），输出：[1, 9]或[3, 7]
        let arr5 = [1, 3, 5, 7, 9];
        arr5.forEach((item1, index1) => {
            arr5.forEach((item2, index2) => {
                if (item1 + item2 === 10 && index1 != index2) {
                    console.log(item1, item2);
                }
            })
        })


        // 7. 数组排序（不要使用sort，自己用循环的方式进行排序）
        let arr6 = [1, 5, 7, 4, 10, 6, 8, 20, 0, 11];


    </script>
</body>

</html>